import tkinter as tk
# 日期与时间库
import datetime
import time

#  结束语 词组
END = ['对不起打扰您了！', '很遗憾，您不符合我们的贷款需求!', '恭喜您通过了我们的贷款初审，您看什么时候方便可以来我们公司，我们公司名是“阳光财富”，在某某大街88号。']
# JSON格式，决策树
DATA = {
    '你好': {
    '你好|你是哪位|什么事': {
        '您需要贷款吗？': {
        '需要|什么贷款': {
            '我可以问您几个问题吗？': {
            '可以|问吧|没问题': {
                '您目前有外债吗？': {
                '没有|无': {
                    '您有固定收入吗？': {
                    '没有': {
                        '您有房产吗？': { '没有': 1, '有': 2 }
                    },
                    '有|有的': 2
                    }
                },
                '有|有的|有一些': 1
                }
            },
            '不可以|不行': 0
            }
        },
        '不需要|不用|挂了': 0
        }
    },
    '我还有事': 0
    }
}

# 当前节点
NODE = {}
# 定时任务
def timer():
    # 你可以可以定时拨打
    start = datetime.datetime.strptime('2029/09/09 15:30:00', '%Y/%m/%d %H:%M:%S')
    start_timestamp = time.mktime(start.timetuple())
    while True:
        # 获取当前时间的时间戳
        current_timestamp = time.time()
        if current_timestamp > start_timestamp:
            # 开始执行任务
            hello()
            break
        else:
            # 打印当前时间的时间戳
            print(current_timestamp)
            # 等待 1 秒
            time.sleep(1)



# 核心代码
def hello():
    global DATA,NODE
    # 开始遍历决策树，从头开始
    q = list(DATA.keys())[0]
    NODE = DATA[q]
    tallk.insert(tk.END, q + "\n")

# 遍历前后节点
def node(tree):
    global END,NODE
    if isinstance(tree, int):
        tallk.insert(tk.END, END[tree] + "\n")
    else:
        for q in tree.keys():
            NODE = tree[q]
            tallk.insert(tk.END, q + "\n")
            break

# 客户发送消息
def send():
    global NODE
    # 获取用户输入
    text = input.get()
    # 输出主人的问话
    tallk.insert(tk.END,  text + "\n","master")
    # 根据问答键值对进行匹配
    is_match = True
    for a in NODE.keys():
        as_list = a.split('|')
        print(as_list)
        if text in as_list:
            is_match = False
            node(NODE[a])
            break
    if is_match:
        tallk.insert(tk.END,  "这个问题我不知道哦，建议您拨打这个电话 8888888\n")



# 创建主窗口
root = tk.Tk()
root.title("贷款评估机器人")

# 创建聊天对话框
tallk = tk.Text(root, width=50, height=14, bg="#CCB")
tallk.pack(fill=tk.BOTH, expand=True)
# 简单样式
tallk.tag_configure("master", justify=tk.RIGHT,foreground="#06E")
input = tk.Entry(root, width=45)
input.pack(side="left")
tk.Button(root, text="发送", command=send).pack(side="right")

# timer()
hello()

root.mainloop()

